package day8.homework;

import java.io.File;
import java.io.FileFilter;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Task5 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        HashMap<String, Integer> map = new HashMap<String, Integer>();


        String path = in.next();

        File file = new File(path);

        //调用一个方法递归遍历当前文件夹
        recur(file, map);
        recursiveFiles(file, map);
        Set keySet = map.keySet();//HashSet
        for (Object key : keySet) {
            //map.get(key):是根据key获取对应 的值
            System.out.println(key + "类型文件有" + map.get(key) + "个");
        }
    }

    private static void recur(File file, HashMap<String, Integer> map){

        if(!file.exists()) return;
        File[] files = file.listFiles();
        Set<String> s = new HashSet<String>();

        for (File f : files) {
            //判断当前的文件路径是文件还是文件夹
            if(f.isDirectory()) {
                //方法内调用自己
                //如果是文件夹，有可能会有文件 ，也可能是文件夹
                recur(f, map);
            }else {
                String sp = f.getName();
                int lastIndexOf = sp.lastIndexOf(".");
                //获取文件的后缀名 .jpg
                String suffix = sp.substring(lastIndexOf + 1);
                if (!s.contains(suffix)) {
                    s.add(suffix);
                    map.put(suffix, 0);
                }
            }
        }
    }

    private static void recursiveFiles(File file, HashMap<String, Integer> map) {
        if(!file.exists()) return;
        //获取当前文件夹下所有文件
        File[] files = file.listFiles();

        //循环
        for (File f : files) {
            //判断当前的文件路径是文件还是文件夹
            if(f.isDirectory()) {
                //方法内调用自己
                //如果是文件夹，有可能会有文件 ，也可能是文件夹
                recursiveFiles(f, map);
            }else {
                String sp = f.getName();
                int lastIndexOf = sp.lastIndexOf(".");
                //获取文件的后缀名 .jpg
                String suffix = sp.substring(lastIndexOf + 1);
                Set keyset = map.keySet();
                for (Object o : keyset) {
                    if (o.equals(suffix)){
                        map.put((String)o, map.get(o) + 1);
                    }
                }
            }
        }
    }
}
